home *** CD-ROM | disk | FTP | other *** search
/ The X-Philes (2nd Revision) / The X-Philes Number 1 (1995).iso / xphiles / hp48hor1 / yatze.src < prev   
Text File  |  1991-10-19  |  6KB  |  423 lines

  1. %%HP: T(3)A(D)F(.);
  2. @ YATZE, a Yahtzee game, by Paul Lancaster
  3. DIR
  4.   YATZE
  5.     \<<
  6. "1S 2S 3S 4S 5S 6S"
  7. 'TS' STO
  8. "TK FK FH SS LS YA CH"
  9. 'BS' STO { ONE TWO
  10. TRE FOUR FIVE SIX }
  11. DUP 'N' STO { TK FK
  12. FH SS LS YA CH } +
  13. 'S' STO { AA BB CC
  14. DD EE FF } 'L' STO
  15. 0 'BO' STO 20 CF Y2
  16.     \>>
  17.   Y2
  18.     \<<
  19.       IF { } S == {
  20. BONS } S == { JOKE
  21. } S == OR OR
  22.       THEN CLEAR TS
  23. BS YTOT { L BO K M
  24. AA BB CC DD EE FF P
  25. C S E X Y TS BS N }
  26. PURGE 1 CF 2 CF 3
  27. CF 4 CF 5 CF 6 CF {
  28. YATZE } MENU
  29.       ELSE " " 'E'
  30. STO 1 10 0 'C' STO
  31.         FOR F F CF
  32.         NEXT 1 5
  33.         START DICE
  34. "   " + E + 'E' STO
  35.         NEXT E 1 17
  36. SUB 'E' STO CLEAR
  37. TS BS E { ROLL.
  38. HELD1 HELD2 HELD3
  39. HELD4 HELD5 } DUP
  40. 'Y' STO MENU
  41.       END
  42.     \>>
  43.   DICE
  44.     \<< RAND 6 * CEIL
  45. \->STR
  46.     \>>
  47.   ROLL.
  48.     \<< 1 5
  49.       FOR A
  50.         IF A FS?
  51.         THEN DICE E
  52. 1 A 1 - 4 * SUB
  53. SWAP + E A 1 - 4 *
  54. 2 + 18 SUB + 'E'
  55. STO
  56.         END
  57.       NEXT CLEAR TS
  58. BS E Y MENU
  59.       IF 6 FS?
  60.       THEN S MENU
  61.       ELSE 6 SF
  62.       END
  63.     \>>
  64.   HELD1
  65.     \<< 1 SF Y 1 1
  66. SUB { TOSS1 } + Y 3
  67. 6 SUB + DUP 'Y' STO
  68. MENU
  69.     \>>
  70.   HELD2
  71.     \<< 2 SF Y 1 2
  72. SUB { TOSS2 } + Y 4
  73. 6 SUB + DUP 'Y' STO
  74. MENU
  75.     \>>
  76.   HELD3
  77.     \<< 3 SF Y 1 3
  78. SUB { TOSS3 } + Y 5
  79. 6 SUB + DUP 'Y' STO
  80. MENU
  81.     \>>
  82.   HELD4
  83.     \<< 4 SF Y 1 4
  84. SUB { TOSS4 } + Y 6
  85. 6 SUB + DUP 'Y' STO
  86. MENU
  87.     \>>
  88.   HELD5
  89.     \<< 5 SF Y 1 5
  90. SUB { TOSS5 } + DUP
  91. 'Y' STO MENU
  92.     \>>
  93.   TOSS1
  94.     \<< 1 CF Y 1 1
  95. SUB { HELD1 } + Y 3
  96. 6 SUB + DUP 'Y' STO
  97. MENU
  98.     \>>
  99.   TOSS2
  100.     \<< 2 CF Y 1 2
  101. SUB { HELD2 } + Y 4
  102. 6 SUB + DUP 'Y' STO
  103. MENU
  104.     \>>
  105.   TOSS3
  106.     \<< 3 CF Y 1 3
  107. SUB { HELD3 } + Y 5
  108. 6 SUB + DUP 'Y' STO
  109. MENU
  110.     \>>
  111.   TOSS4
  112.     \<< 4 CF Y 1 4
  113. SUB { HELD4 } + Y 6
  114. 6 SUB + DUP 'Y' STO
  115. MENU
  116.     \>>
  117.   TOSS5
  118.     \<< 5 CF Y 1 5
  119. SUB { HELD5 } + DUP
  120. 'Y' STO MENU
  121.     \>>
  122.   ONE
  123.     \<< 1 'P' STO PE
  124.     \>>
  125.   TWO
  126.     \<< 2 'P' STO PE
  127.     \>>
  128.   TRE
  129.     \<< 3 'P' STO PE
  130.     \>>
  131.   FOUR
  132.     \<< 4 'P' STO PE
  133.     \>>
  134.   FIVE
  135.     \<< 5 'P' STO PE
  136.     \>>
  137.   SIX
  138.     \<< 6 'P' STO PE
  139.     \>>
  140.   NA
  141.     \<< 1 17
  142.       FOR A E A A
  143. SUB P \->STR
  144.         IF ==
  145.         THEN C P +
  146. 'C' STO
  147.         END 4
  148.       STEP
  149.     \>>
  150.   PE
  151.     \<< S S N P P SUB
  152. LIST\-> DROP POS 1 -
  153. 1 SWAP SUB S S N P
  154. P SUB LIST\-> DROP
  155. POS 1 + 13 SUB +
  156. 'S' STO NA C DUP 10
  157.       IF <
  158.       THEN \->STR "0"
  159. SWAP +
  160.       ELSE \->STR
  161.       END TS 1 P 1
  162. - 3 * SUB SWAP + TS
  163. P 3 * 20 SUB + 'TS'
  164. STO Y2
  165.     \>>
  166.   TK
  167.     \<< 2 'P' STO
  168. 'TO' 'K' STO 'TK1'
  169. 'M' STO PL
  170.     \>>
  171.   TK1
  172.     \<< S S 'TK' POS
  173. 1 - 1 SWAP SUB S S
  174. 'TK' POS 1 + 14 SUB
  175. + 'S' STO C DUP 10
  176.       IF <
  177.       THEN \->STR "0"
  178. SWAP +
  179.       ELSE \->STR
  180.       END BS 3 20
  181. SUB + 'BS' STO Y2
  182.     \>>
  183.   FK
  184.     \<< 3 'P' STO
  185. 'TO' 'K' STO 'FK1'
  186. 'M' STO PL
  187.     \>>
  188.   FK1
  189.     \<< S S 'FK' POS
  190. 1 - 1 SWAP SUB S S
  191. 'FK' POS 1 + 14 SUB
  192. + 'S' STO C DUP 10
  193.       IF <
  194.       THEN \->STR "0"
  195. SWAP +
  196.       ELSE \->STR
  197.       END BS 1 3
  198. SUB SWAP + BS 6 20
  199. SUB + 'BS' STO Y2
  200.     \>>
  201.   FH
  202.     \<<
  203.       IF 10 FS?
  204.       THEN 25 'C'
  205. STO FH1
  206.       ELSE CHK 3 2
  207.         FOR A 1 6
  208.           FOR B L B
  209. B SUB LIST\-> DROP
  210. EVAL
  211.             IF A ==
  212.             THEN 11
  213. A - SF
  214.             END
  215.           NEXT -1
  216.         STEP
  217.         IF 8 FS? 9
  218. FS? AND
  219.         THEN 25 'C'
  220. STO FH1
  221.         ELSE FH1
  222.         END
  223.       END
  224.     \>>
  225.   FH1
  226.     \<< S S 'FH' POS
  227. 1 - 1 SWAP SUB S S
  228. 'FH' POS 1 + 14 SUB
  229. + 'S' STO C DUP 9
  230.       IF <
  231.       THEN \->STR "0"
  232. SWAP +
  233.       ELSE \->STR
  234.       END BS 1 6
  235. SUB SWAP + BS 9 22
  236. SUB + 'BS' STO Y2
  237.     \>>
  238.   SS
  239.     \<<
  240.       IF 10 FS?
  241.       THEN SS1
  242.       ELSE CHK
  243.         IF AA BB
  244. AND CC AND DD AND
  245.         THEN SS1
  246.         ELSE
  247.           IF BB CC
  248. AND DD AND EE AND
  249.           THEN SS1
  250.           ELSE
  251.             IF CC
  252. DD AND EE AND FF
  253. AND
  254.             THEN
  255. SS1
  256.             ELSE
  257. SS2
  258.             END
  259.           END
  260.         END
  261.       END
  262.     \>>
  263.   SS1
  264.     \<< 30 'C' STO
  265. SS2
  266.     \>>
  267.   SS2
  268.     \<< S S 'SS' POS
  269. 1 - 1 SWAP SUB S S
  270. 'SS' POS 1 + 14 SUB
  271. + 'S' STO C DUP 9
  272.       IF <
  273.       THEN \->STR "0"
  274. SWAP +
  275.       ELSE \->STR
  276.       END BS 1 9
  277. SUB SWAP + BS 12 22
  278. SUB + 'BS' STO Y2
  279.     \>>
  280.   LS
  281.     \<<
  282.       IF 10 FS?
  283.       THEN LS1
  284.       ELSE CHK
  285.         IF AA BB
  286. AND CC AND DD AND
  287. EE AND
  288.         THEN LS1
  289.         ELSE
  290.           IF BB CC
  291. AND DD AND EE AND
  292. FF AND
  293.           THEN LS1
  294.           ELSE LS2
  295.           END
  296.         END
  297.       END
  298.     \>>
  299.   LS1
  300.     \<< 40 'C' STO
  301. LS2
  302.     \>>
  303.   LS2
  304.     \<< S S 'LS' POS
  305. 1 - 1 SWAP SUB S S
  306. 'LS' POS 1 + 14 SUB
  307. + 'S' STO C DUP 9
  308.       IF <
  309.       THEN \->STR "0"
  310. SWAP +
  311.       ELSE \->STR
  312.       END BS 1 12
  313. SUB SWAP + BS 15 22
  314. SUB + 'BS' STO Y2
  315.     \>>
  316.   YA
  317.     \<< 4 'P' STO
  318. 'YA1' 'K' STO 'YA2'
  319. 'M' STO PL
  320.     \>>
  321.   YA1
  322.     \<< S { BONS } +
  323. 'S' STO 50 'C' STO
  324. 20 SF
  325.     \>>
  326.   YA2
  327.     \<<
  328.       IF 20 FC?
  329.       THEN S { JOKE
  330. } + 'S' STO
  331.       END S S 'YA'
  332. POS 1 - 1 SWAP SUB
  333. S S 'YA' POS 1 + 14
  334. SUB + 'S' STO C DUP
  335. 9
  336.       IF <
  337.       THEN \->STR "0"
  338. SWAP +
  339.       ELSE \->STR
  340.       END BS 1 15
  341. SUB SWAP + BS 18 22
  342. SUB + 'BS' STO Y2
  343.     \>>
  344.   PL
  345.     \<< CHK 1 6
  346.       FOR A L A A
  347. SUB LIST\-> DROP EVAL
  348.         IF P >
  349.         THEN 7 SF
  350.         END
  351.       NEXT
  352.       IF 7 FS?
  353.       THEN K M
  354.       ELSE M
  355.       END
  356.     \>>
  357.   CH
  358.     \<< TO S S 'CH'
  359. POS 1 - 1 SWAP SUB
  360. S S 'CH' POS 1 + 14
  361. SUB + 'S' STO C DUP
  362. 10
  363.       IF <
  364.       THEN \->STR "0"
  365. SWAP +
  366.       ELSE \->STR
  367.       END BS 1 18
  368. SUB SWAP + 'BS' STO
  369. Y2
  370.     \>>
  371.   BONS
  372.     \<< BO 100 + 'BO'
  373. STO JOKE
  374.     \>>
  375.   JOKE
  376.     \<< CHK 1 6
  377.       FOR A L A A
  378. SUB LIST\-> DROP EVAL
  379.         IF 4 >
  380.         THEN 7 SF
  381.         END
  382.       NEXT
  383.       IF 7 FS?
  384.       THEN TS BS 10
  385. SF "YATZE JOKER" S
  386. MENU
  387.       ELSE TS BS
  388. "DO NOT CHEAT" S
  389. MENU
  390.       END
  391.     \>>
  392.   TO
  393.     \<< E STR\-> + + +
  394. + 'C' STO
  395.     \>>
  396.   CHK
  397.     \<< 0 'AA' STO 0
  398. 'BB' STO 0 'CC' STO
  399. 0 'DD' STO 0 'EE'
  400. STO 0 'FF' STO 1 6
  401.       FOR A 1 5
  402.         FOR B E
  403. STR\-> B PICK A
  404.           IF ==
  405.           THEN L
  406. LIST\-> A 1 - - PICK
  407. DUP EVAL 1 + SWAP
  408. STO
  409.           END CLEAR
  410.         NEXT
  411.       NEXT
  412.     \>>
  413.   YTOT
  414.     \<< BO TS STR\-> +
  415. + + + + + DUP 62
  416.       IF >
  417.       THEN 35 +
  418.       END BS STR\-> +
  419. + + + + + +
  420.     \>>
  421.   CST { YATZE }
  422. END
  423.